<?php
//
// Configuración global del sistema.
//
class ContextConfig
{
	/**
	 * Directorio principal de la aplicación.
	 *
	 * @var string
	 */
	public $appRoot     = "src/com/gpan";

	/**
	 * Directorio principal de kondor.
	 *
	 * @var string
	 */
	public $contextRoot = "src/org/kondor";

	/**
	 * Nombre del archivo Index que se cargará.
	 *
	 * @var string
	 */
	public $indexFile   = "default.inc";

	/**
	 * Clase principal del ORM. La aplicación le pasará como
	 * argumentos al constructor la clase de configuración,
	 * y el ClassLoader del contexto actual.
	 *
	 * @var string
	 */
	public $ormLoaderClass = "";

	/**
	 * Nombre de la clase de configuración del modelo.
	 * Esta clase se le pasará como argumento al bean
	 * factory del ORM en uso.
	 */
	public $ormConfigClass = "";

	/**
	 * ClassLoader predeterminado para este contexto.
	 * Cuando el contexto esté inicializado, se podrá
	 * obtener la instancia del class loader global
	 * mediante este campo.
	 */
	public $classLoader = ClassLoader;

	/**
	 * Una vez cargado el contexto, contendrá la referencia
	 * al objeto que cargó este contexto.
	 */
	public $application = null;

	/**
	 * Clases de usuario que se cargarán al inicio del contexto.
	 * Estas clases deberán estar dentro de los directorios include.
	 */
	public $userLibs    = array (
	);

	/**
	 * Clases del sistema que se incluirán en el contexto actual.
	 * Dependiendo de las necesidades de la aplicación, en este
	 * campo podrán agregarse componentes específicos de kondor.
	 */
	public $contextLibs = array (
		"ReflectionClassEx",
		"ReflectionHandler",
		"AnnotationHandler",
		"Annotation"
	);

	/**
	 * Directorios de includes. Todas las clases cargadas
	 * con el class loader del contexto, deberán encontrarse
	 * en los directorios definidos en este campo. Pueden
	 * definirse tantos directorios como sea necesario.
	 */
	public $includePath = array (
		"config"     => "{APP_ROOT}/config/",			// Directorio de Configuración del contexto.
		"services"   => "{APP_ROOT}/services/",			// Directorio de servicios.
		"user"       => "{APP_ROOT}/util/"
	);

	/**
	 * Directorio de uploads, relativo al root de la aplicación.
	 */
	public $uploadDir = "users/";

	/**
	 * Descripciones predefinidas para los distintos
	 * tipos de excepciones. Deberá especificarse por
	 * pares NombreDeExcepcion => "Descripción"
	 */
	public $exceptions = array (
		LibMissingException 		=> "No se encontró la librería especificada.",
		ServiceUnavailableException => "El servicio especificado no existe.",
		SQLException 				=> "Error en la consulta SQL.",
		UnhandledException 			=> "Error desconocido."
	);

	/**
	 * Tipo de request: get, post o both.
	 */
	public $REQUEST_METHOD = "post";

	/**
	 * Servicio predeterminado. Será llamado
	 * en caso de no haberse especificado datos.
	 *
	 * @var string
	 */
	public $DEFAULT_SERVICE = null;

	/**
	 * Nombre del parámetro del request que
	 * contendrá los datos de la llamada.
	 *
	 * @var string
	 */
	public $PARAM_REQUEST = "rq";

	/**
	 * Nombre del parámetro que especificará la
	 * codificación que tendrá la petición.
	 *
	 * @var string
	 */
	public $PARAM_ENCODING = "enc";

	/**
	 * Nombre del endpoint en el que se invocará la función
	 * definida en PARAM_PROCNAME
	 *
	 * @var string
	 */
	public $PARAM_ENDPOINT = "endpoint";

	/**
	 * Nombre de la función que será invocada en el endpoint
	 *
	 * @var string
	 */
	public $PARAM_PROCNAME = "procName";

	/**
	 * Dominios que tendrán permitido el
	 * acceso a los servicios.
	 */
	public $allowedDomains = array(
		"localhost"
	);
}
?>
